1
Сила интроспекции
AI035Lesson 15
00:00

В Ruby код — это не просто статический скрипт, он является живой системой. Интроспекция — это сверхспособность, позволяющая объектам обладать «самосознанием», превращая их из чёрных коробок в поисковые карты функциональности. Даже немедленные значения целые числа могут быть проанализированы на предмет их происхождения и возможностей во время выполнения.

1. Живой интерфейс

Вызывая obj.methods(regular=true), мы получаем полный набор функций объекта. Простой объект диапазона (r = 1..10) раскрывает впечатляющие 68 различных методов, что отражает его богатое наследование от Object и Enumerable миксина.

Боковая панель [А]МассивAtan2АвтозагрузкаКласс Массив < ОбъектEnumerableПодпись метода: Массив#packВвод: строка шаблонаВывод: двоичная строка

2. Динамическое исследование

Метод respond_to? выполняет роль дверного замка во время выполнения, обеспечивая Динамическую типизацию. Вместо вопроса «Кто ты?» задаём вопрос «Можешь ли ты это сделать?». Эта гибкость позволяет программам адаптироваться к реальным возможностям, например, проверять, реагирует ли строка на символы, похожие на оператор присваивания (=) или поддерживает ли числовое значение определённый запрос иерархии.

3. Мост метадокументации

Инструменты, такие как RDoc используют эти возможности для автоматического создания алфавитных списков и диаграмм подписей методов. Используя запросы к константам модулей и экземплярным переменным, разработчики могут программно перемещаться по всей структуре пространства имён, преодолевая разрыв между исходными файлами и активным выполнением.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>